Dependency Injection
和訳について
あまりいい和訳ではない、という意見がある
賛成。和訳を言う必要がある場合は「依存オブジェクトの注入」を使おうrmaruon.icon
英語wiki says
dependency injection is a technique in which an object receives other objects that it depends on.
dependency injectionは、「オブジェクト」が「依存している他のオブジェクト」を受け取るテクニックです
具体例
最初になんとなく理解できた例
code:非DI 疑似(js)
import クラスB
class クラスA {
b = new クラスB();
}
クラスA内でクラスBをインスタンス化する
クラスAがクラスBに依存している
クラスAのインスタンス生成と同時に、クラスBのインスタンスが生成されている
code:DI 疑似(js)
import di
class クラスA {
b = di.get_B() // di.get_Bは、クラスBのインスタンスを返す
}
モック化の技術と合わせて使うと、テストで使いたいオブジェクトをテストメソッドからアクセスできる テストしたい対象がテスト側からアクセスできない問題を解決する方法
確認したいクラスのオブジェクトをテスト対象のクラスで直接注入する
テスト対象のオブジェクトのコンストラクタを使って、モック化したいオブジェクトを入れ替える
可能になること
モックをテスト対象のオブジェクトの外(ユニットテスト)から操作できる
ユニットテストの実行時に、モックに対して行われた操作をトラッキングし検証できる
ref